#include "Thread.hpp"
#include <unordered_map>
#include <memory>

#define NUM 10

using thread_ptr_t = std::shared_ptr<ThreadModule::Thread>;

int main()
{
    // 先描述，再组织！
    std::unordered_map<std::string, thread_ptr_t> threads;
    // 创建多线程
    for (int i = 0; i < NUM; i++)
    {
        thread_ptr_t t = std::make_shared<ThreadModule::Thread>([](){
            while(true)
            {
                std::cout << "hello world" << std::endl;
                sleep(1);
            } 
        });
        threads[t->Name()] = t;
    }

    for(auto &thread:threads)
    {
        thread.second->Start();
    }

    for(auto &thread:threads)
    {
        thread.second->Join();
    }

    // ThreadModule::Thread t([](){
    //     while(true)
    //     {
    //         std::cout << "hello world" << std::endl;
    //         sleep(1);
    //     }
    // });

    // t.Start();
    // std::cout << t.Name() << "is running" << std::endl;
    // sleep(5);

    // t.Stop();
    // sleep(1);
    // t.Join();

    return 0;
}